package com.info.bll;

import com.info.dal.UserDAL;
import com.info.model.UserInfo;

//用户逻辑层
public class UserBLL {

    UserDAL userDAL = new UserDAL();

    /**
     * 用户注册方法
     * 输入用户名和密码
     * */
    public boolean addUser(UserInfo userInfo){
        //判断注册的用户名是否存在，不存在，才允许添加
        if(!userDAL.validateUserIsExist(userInfo)){
            Integer newId = userDAL.adduser(userInfo);
            if(newId>0){
                UserInfo user = new UserInfo();
                user.setUser_id(newId);
                user.setRole_id(1);
                //添加关系数据
                if(userDAL.addUserRoleRelationShip(user)>0){
                    return true;
                }else{
                    return false;
                }

            }else{
                return false;
            }
        }else{
            //用户存在
            return false;
        }
    }

    /**
     * 更新用户密码
     * 1.检查用户输入的旧密码是否正确
     * 2.输入正确才可以修改密码
     * @return 是否成功 true or false
     * */
    public boolean modityUserPassByUserId(UserInfo userInfo){
        //第一步检查用户旧密码是否输入正确
        UserInfo user = userDAL.validateUserLogin(userInfo);
        if(user!=null){
            //旧密码验证成功
            //第二步，修改密码
            //把新密码放入userpass字段，执行第二步操作
            userInfo.setUserpass(userInfo.getNewpass());
            if(userDAL.modityUserPassByUserId(userInfo)>0){
                //修改成功
                return true;
            }else{
                //修改失败
                return false;
            }
        }else{
            //旧密码验证失败
            return false;
        }
    }

    /**
     * 更新用户信息操作
     * 更新用户基本信息表的同时，更新用户权限关系表
     * */
    public boolean updateUserInfoById(UserInfo userInfo){
        //第一步更新用户基本信息表
        if(userDAL.modifyUserInfoById(userInfo)>0){
            //更新成功
            if(userDAL.modifyUserRoleById(userInfo)>0){
                return true;
            }else{
                return false;
            }
        }else{
            return false;
        }
    }

    /**
     * 根据用户删除用户信息：包括信息表和权限关系表
     * */
    public boolean deleteUserById(UserInfo userInfo){
        if(userDAL.deleteUserById(userInfo)>0){
            if(userDAL.deleteUserRoleRelationShip(userInfo)>0){
                return true;
            }else{
                return false;
            }
        }else {
            return false;
        }
    }
}
